package de.syfy.project.engine.utils;

import java.util.Random;

/**
 * Routine für Schranken muss wahrscheinlich nochmals überarbeitet werden,
 * da die Chance besteht (Zufall), dass es endloschleifen gibt!
 * 
 * @author Timo
 */


public class RandomValues {
    private static Random random = new Random();
    
    /**
     * Erzeugt eine positive zufällige Zahl zwischen den beiden Schranken.
     * 
     * @param low
     * @param high
     * @return 
     */
    public static int getRandomInt(int low, int high){
        int rnd = random.nextInt(high);
        while(rnd < low){
            rnd = random.nextInt(high);
        }
        return rnd;
    }
    
    /**
     * Erzeugt eine positive zufällige Zahl die größer als die gegebene Schranke
     * ist.
     * 
     * @param low
     * @return 
     */
    
    public static int getRandomInt(int low){
        int rnd = random.nextInt();
        while(rnd < low){
            rnd = random.nextInt();
        }
        return rnd;
    }
    
    /**
     * Erzeugt eine zufällige floating Point Zahl zwischen 0 und 1. Wenn
     * <b>includeNegative</b> true ist werden auch Zahlen zwischen -1 und 0
     * eingeschloßen.
     * 
     * @param includeNegative
     * @return 
     */
    public static float getRandomFloat(boolean includeNegative){
        if(includeNegative){
            boolean neg = random.nextBoolean();
            return random.nextFloat()*(neg?-1f:1f);
        }
        return random.nextFloat();
    }
}
